package com.mdd.front.service;

import com.mdd.common.core.PageResult;
import com.mdd.common.entity.competition.CompetitionMatchDetail;
import com.mdd.common.entity.competition.CompetitionScore;
import com.mdd.front.validate.common.PageValidate;
import com.mdd.front.validate.competition.*;
import com.mdd.front.vo.competition.*;

import java.util.Map;

public interface ICompetitionService {

    PageResult<CompetitionListedVo> list(PageValidate pageValidate, CompetitionSearchValidate searchValidate);

    /**
     * 文章详情
     *
     * @author fzr
     * @param id 文章主键
     * @param userId 用户ID
     * @return ArticleDetailVo
     */
    CompetitionDetailVo detail(Integer id, Integer userId);

    void apply(CompetitionApplyValidate competitionApplyValidate);


    PageResult<CompetitionApplyListsVo> applyLists(Integer userId,PageValidate pageValidate);

    void applyCancel(Integer articleId);

    CompetitionApplyInviteVo applyInvite(String code);

    void applyAccept(CompetitionApplyAcceptValidate applyAcceptValidate);

    CompetitionShowVo applyShow(Integer memberId,Integer id);

    CompetitionSessionListedVo session(CompetitionSessionValidate sessionValidate);

    CompetitionPlayVo play(Integer id,Integer matchId);

    CompetitionMatchDetail playDetail(Integer matchId);

    PageResult<Map> scheduleList(PageValidate pageValidate, CompetitionScheduleSearchValidate searchValidate);
    PageResult<Map> scoreList(PageValidate pageValidate, CompetitionScoreSearchValidate searchValidate);

    void playScoreAdd(CompetitionScore updateValidate) throws NoSuchFieldException, IllegalAccessException;
}
